React Native এ AsyncStorage এবং Local Data Storage

Mobile App Development - রিঅ্যাক্ট নেটিভ (React Native)
239

React Native অ্যাপে local data storage ব্যবহারের জন্য সাধারণত AsyncStorage ব্যবহার করা হয়। AsyncStorage হল একটি key-value ভিত্তিক স্টোরেজ সিস্টেম যা অ্যাপ্লিকেশনে ডেটা স্থানীয়ভাবে সংরক্ষণ করতে ব্যবহৃত হয়। এটি মূলত নেটিভ অ্যাপ্লিকেশন দ্বারা ডেটা সংরক্ষণ করার একটি সহজ উপায় সরবরাহ করে, যেমন ইউজার সেটিংস, লগইন তথ্য, এবং অন্যান্য সাধারণ ডেটা।

React Native এ AsyncStorage এর মাধ্যমে ডেটা অ্যাসিনক্রোনাসলি সংরক্ষণ এবং পুনরুদ্ধার করা যায়।


AsyncStorage সেটআপ এবং ব্যবহার

React Native-এ AsyncStorage ব্যবহারের জন্য কিছু সহজ ধাপ অনুসরণ করতে হবে।

১. AsyncStorage ইনস্টল করা

React Native 0.59 বা তার পরবর্তী সংস্করণগুলিতে AsyncStorage আলাদা প্যাকেজ হিসেবে চালু হয়েছে। AsyncStorage ইনস্টল করতে, নিচের কমান্ডটি ব্যবহার করুন:

npm install @react-native-async-storage/async-storage

এছাড়া, iOS-এ কাজ করার জন্য আপনাকে pod install কমান্ডও রান করতে হতে পারে:

cd ios && pod install && cd ..

২. AsyncStorage ব্যবহার করা

AsyncStorage ব্যবহার করতে প্রথমে এটি import করুন এবং তারপরে অ্যাসিনক্রোনাস মেথডগুলির মাধ্যমে ডেটা সংরক্ষণ, আপডেট, বা পুনরুদ্ধার করুন।

১. ডেটা সংরক্ষণ (Save Data)
import AsyncStorage from '@react-native-async-storage/async-storage';

// ডেটা সংরক্ষণ
const saveData = async () => {
  try {
    await AsyncStorage.setItem('username', 'JohnDoe'); // key-value pair
    console.log('Data saved successfully!');
  } catch (error) {
    console.error('Failed to save data:', error);
  }
};

এখানে setItem মেথড ব্যবহার করা হয়েছে, যেখানে প্রথম প্যারামিটার হল key এবং দ্বিতীয় প্যারামিটার হল value

২. ডেটা পুনরুদ্ধার (Retrieve Data)
import AsyncStorage from '@react-native-async-storage/async-storage';

// ডেটা পুনরুদ্ধার
const getData = async () => {
  try {
    const value = await AsyncStorage.getItem('username');
    if (value !== null) {
      console.log('Retrieved value:', value); // Output: JohnDoe
    } else {
      console.log('No value found!');
    }
  } catch (error) {
    console.error('Failed to retrieve data:', error);
  }
};

এখানে getItem মেথড ব্যবহার করা হয়েছে, যা প্রদত্ত key এর সাথে সংশ্লিষ্ট value ফেরত দেয়।

৩. ডেটা মুছে ফেলা (Remove Data)
import AsyncStorage from '@react-native-async-storage/async-storage';

// ডেটা মুছে ফেলা
const removeData = async () => {
  try {
    await AsyncStorage.removeItem('username');
    console.log('Data removed successfully!');
  } catch (error) {
    console.error('Failed to remove data:', error);
  }
};

removeItem মেথড ব্যবহার করে আপনি যেকোনো key-value পেয়ার মুছে ফেলতে পারেন।

৪. সমস্ত ডেটা মুছে ফেলা (Clear All Data)
import AsyncStorage from '@react-native-async-storage/async-storage';

// সমস্ত ডেটা মুছে ফেলা
const clearAllData = async () => {
  try {
    await AsyncStorage.clear();
    console.log('All data cleared!');
  } catch (error) {
    console.error('Failed to clear data:', error);
  }
};

এখানে clear মেথড ব্যবহৃত হয়েছে যা সমস্ত ডেটা মুছে ফেলে।


AsyncStorage এর সীমাবদ্ধতা

  • Security: AsyncStorage সাধারণত সিকিউরড না, তাই এটি সেন্সিটিভ ডেটা (যেমন পাসওয়ার্ড) সংরক্ষণ করার জন্য উপযুক্ত নয়।
  • Storage Limitation: AsyncStorage এ সংরক্ষিত ডেটার জন্য স্টোরেজের একটি সীমা থাকতে পারে। তাই বড় আকারের ডেটা সংরক্ষণ করতে এটি উপযুক্ত নয়।
  • Performance: যদি আপনি অনেক ডেটা পুনরুদ্ধার এবং সংরক্ষণ করছেন, তবে এর পারফরম্যান্স কিছুটা প্রভাবিত হতে পারে।

React Native এর Local Data Storage বিকল্পগুলি

  1. SQLite: বড় ডেটাবেস ব্যবহার করার জন্য SQLite একটি শক্তিশালী বিকল্প। এটি ডেটাবেস ম্যানেজমেন্ট সিস্টেম সরবরাহ করে যা ডেটার জন্য জটিল কুয়েরি পরিচালনা করতে পারে।
    • SQLite ইনস্টল করতে:

      npm install react-native-sqlite-storage
    • এর মাধ্যমে বড় আকারের ডেটা যেমন ফর্ম ডেটা, ট্রানজেকশন ইতিহাস ইত্যাদি সংরক্ষণ করা যায়।
  2. Realm: Realm একটি মোবাইল ডেটাবেস যা লোকাল ডেটার জন্য দ্রুত এবং দক্ষ। এটি উন্নত পারফরম্যান্স এবং অফলাইন সিঙ্কিং ফিচার সমর্থন করে।
    • Realm ইনস্টল করতে:

      npm install realm

AsyncStorage এর মাধ্যমে Practical Example

এখন আসুন একটি Practical Example দেখি যেখানে একটি সিম্পল লগইন ফর্ম তৈরি করে AsyncStorage এর মাধ্যমে ইউজারের লগইন স্টেট সংরক্ষণ করা হয়েছে:

import React, { useState } from 'react';
import { View, TextInput, Button, StyleSheet, Text } from 'react-native';
import AsyncStorage from '@react-native-async-storage/async-storage';

const LoginScreen = () => {
  const [username, setUsername] = useState('');
  const [isLoggedIn, setIsLoggedIn] = useState(false);

  const handleLogin = async () => {
    if (username) {
      await AsyncStorage.setItem('username', username);
      setIsLoggedIn(true);
    }
  };

  const handleLogout = async () => {
    await AsyncStorage.removeItem('username');
    setIsLoggedIn(false);
  };

  return (
    <View style={styles.container}>
      {!isLoggedIn ? (
        <>
          <TextInput
            style={styles.input}
            placeholder="Enter username"
            value={username}
            onChangeText={setUsername}
          />
          <Button title="Login" onPress={handleLogin} />
        </>
      ) : (
        <>
          <Text>Welcome, {username}!</Text>
          <Button title="Logout" onPress={handleLogout} />
        </>
      )}
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  input: {
    width: 200,
    height: 40,
    borderColor: '#ccc',
    borderWidth: 1,
    marginBottom: 10,
    paddingLeft: 8,
  },
});

export default LoginScreen;

এখানে, ইউজার নাম ইনপুট নেওয়া হচ্ছে এবং লগইন করা হলে AsyncStorage-এ সেই ইউজারনেম সংরক্ষণ করা হচ্ছে। পরে লগআউট করলে ইউজারনেম মুছে ফেলা হচ্ছে।


সারাংশ

React Native অ্যাপ্লিকেশনগুলিতে local data storage ব্যবহারের জন্য AsyncStorage একটি খুবই কার্যকরী এবং সহজ উপায়। এটি অ্যাপের মধ্যে ছোট ডেটা যেমন ইউজার প্রেফারেন্স, লগইন স্টেট ইত্যাদি সংরক্ষণ করতে সাহায্য করে। তবে, যদি আপনার অ্যাপ্লিকেশনের ডেটা অনেক বেশি এবং নিরাপত্তা গুরুত্বপূর্ণ হয়, তাহলে অন্য বিকল্প যেমন SQLite বা Realm ব্যবহার করার কথা ভাবতে পারেন।

Content added By

AsyncStorage কী এবং কেন ব্যবহার করা হয়?

203

AsyncStorage হল React Native অ্যাপ্লিকেশনে ডেটা সংরক্ষণ করার জন্য একটি সিঙ্গেল-ভ্যালু স্টোরেজ সিস্টেম। এটি মূলত অ্যাসিঙ্ক্রোনাস (asynchronous) এবং সিঙ্ক্রোনাস (synchronous) পদ্ধতিতে ছোট ডেটা যেমন ব্যবহারকারী সেটিংস, লগইন টোকেন, থিম সেটিংস, বা ছোট কনফিগারেশন ডেটা সংরক্ষণ করতে ব্যবহৃত হয়।

AsyncStorage React Native অ্যাপ্লিকেশনের জন্য একটি স্থানীয় স্টোরেজ ব্যবস্থা, যা অ্যাপ্লিকেশন বন্ধ বা ডিভাইস পুনরায় চালু হওয়ার পরও ডেটা সংরক্ষণ করতে সাহায্য করে। এর মাধ্যমে, আপনি মোবাইল ডিভাইসে স্ট্রিং, অবজেক্ট, এবং অ্যারে ইত্যাদি ধরনের ডেটা সংরক্ষণ এবং পুনরুদ্ধার করতে পারেন।


AsyncStorage কেন ব্যবহার করা হয়?

1. ছোট আকারের ডেটা সংরক্ষণের জন্য
AsyncStorage ছোট আকারের ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। আপনি যদি ব্যবহারকারী লগইন টোকেন, ভাষা পছন্দ, অথবা থিম সেটিংস সংরক্ষণ করতে চান, তবে AsyncStorage একটি ভালো সমাধান।

উদাহরণ:

  • ইউজার অথেনটিকেশন টোকেন
  • ইউজারের প্রিফারেন্স বা সেটিংস
  • প্রোগ্রেস বা অবস্থার ট্র্যাকিং (যেমন গেমের প্রগ্রেস বা চলমান কাজ)

2. ডেটা স্থায়ীভাবে সংরক্ষণ
AsyncStorage আপনাকে ডেটা মোবাইল ডিভাইসে স্থায়ীভাবে সংরক্ষণ করতে সাহায্য করে, যার মানে হলো অ্যাপ্লিকেশনটি বন্ধ বা ডিভাইস পুনরায় চালু হলেও ডেটা অক্ষত থাকে।

3. সহজ এবং দ্রুত
AsyncStorage একটি সহজ API প্রদান করে এবং ডেটা সংরক্ষণ এবং পুনরুদ্ধারের জন্য খুব দ্রুত কাজ করে। এটি সিঙ্ক্রোনাস ও অ্যাসিঙ্ক্রোনাস অপশনের মাধ্যমে সহজেই ব্যবহৃত হতে পারে।

4. নেটওয়ার্ক কানেকশন না থাকলে ডেটা সংরক্ষণ
যখন নেটওয়ার্ক কানেকশন অনুপস্থিত থাকে, তখন আপনি AsyncStorage ব্যবহার করে ডেটা সংরক্ষণ করতে পারেন এবং পরে পুনরুদ্ধার করতে পারেন, যখন ইন্টারনেট কানেকশন উপলব্ধ হবে।

5. ডেভেলপমেন্টের জন্য অস্থায়ী ডেটা সংরক্ষণ
আপনি যখন ডেভেলপমেন্ট পর্যায়ে আছেন, তখন ছোট আকারের ডেটা সংরক্ষণ এবং পরীক্ষার জন্য AsyncStorage ব্যবহার করতে পারেন। এটি ডেটা দ্রুত পরীক্ষা করার জন্য খুবই কার্যকর।


AsyncStorage এর সীমাবদ্ধতা

  1. বড় ডেটা সংরক্ষণে সমস্যা
    AsyncStorage খুব বড় পরিমাণের ডেটা সংরক্ষণ করতে ব্যবহৃত হতে পারে না। এটি সাধারণত অল্প পরিমাণে ডেটা সংরক্ষণে ভালো কাজ করে, যেমন কনফিগারেশন সেটিংস বা ছোট ডেটা।
  2. সিকিউরিটি
    AsyncStorage এর মাধ্যমে সংরক্ষিত ডেটা এনক্রিপ্টেড নয়। এর মানে হল যে, পাসওয়ার্ড, ক্রেডেনশিয়ালস বা ব্যাংকিং ডেটা এর মতো সংবেদনশীল ডেটা AsyncStorage এ সংরক্ষণ করা উচিত নয়। এজন্য এই ধরনের ডেটার জন্য অন্যান্য নিরাপদ স্টোরেজ ব্যবস্থাপনা যেমন Secure Storage ব্যবহার করা উচিত।
  3. একক ডিভাইসের জন্য
    AsyncStorage শুধুমাত্র এক ডিভাইসে ডেটা সংরক্ষণ করে। এটি ক্লাউড ডেটাবেস বা ব্যাকএন্ড সার্ভিস হিসেবে ব্যবহৃত হতে পারে না।

AsyncStorage ব্যবহার করার জন্য ইনস্টলেশন এবং উদাহরণ

ইনস্টলেশন:

React Native 0.59 এর পর থেকে, AsyncStorage আর React Native Core এর অংশ নয়। এটি আলাদাভাবে ইনস্টল করতে হয়:

npm install @react-native-async-storage/async-storage

এরপর আপনাকে Native Modules লিঙ্ক করতে হবে:

npx react-native link @react-native-async-storage/async-storage

AsyncStorage এর উদাহরণ

ডেটা সংরক্ষণ করা:

import AsyncStorage from '@react-native-async-storage/async-storage';

// একটি স্ট্রিং সংরক্ষণ করা
AsyncStorage.setItem('userToken', 'abc123')
  .then(() => console.log('Token saved'))
  .catch((error) => console.log(error));

ডেটা পুনরুদ্ধার করা:

import AsyncStorage from '@react-native-async-storage/async-storage';

// একটি স্ট্রিং পুনরুদ্ধার করা
AsyncStorage.getItem('userToken')
  .then((value) => console.log('Token retrieved: ', value))
  .catch((error) => console.log(error));

ডেটা মুছে ফেলা:

import AsyncStorage from '@react-native-async-storage/async-storage';

// ডেটা মুছে ফেলা
AsyncStorage.removeItem('userToken')
  .then(() => console.log('Token removed'))
  .catch((error) => console.log(error));

সারাংশ

AsyncStorage React Native অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহারকারী ডেটা, প্রেফারেন্স এবং সেটিংস সংরক্ষণ করার জন্য একটি সহজ এবং কার্যকরী সমাধান। এটি অ্যাপ্লিকেশন বন্ধ বা ডিভাইস পুনরায় চালু হলেও ডেটা সংরক্ষণে সাহায্য করে, তবে এটি ছোট আকারের ডেটার জন্য উপযুক্ত। তবে নিরাপদ ডেটা সংরক্ষণের জন্য অন্য পদ্ধতিও ব্যবহার করা উচিত।

Content added By

AsyncStorage এর মাধ্যমে Simple Data Store করা

215

AsyncStorage হল একটি স্টোরেজ সলিউশন যা React Native অ্যাপে ছোট এবং সহজ ডেটা স্টোর করার জন্য ব্যবহৃত হয়। এটি মূলত অ্যাপ্লিকেশন স্তরের স্টোরেজ হিসেবে কাজ করে, যেখানে আপনি কী-ভ্যালু পেয়ারের মাধ্যমে ডেটা সংরক্ষণ করতে পারেন। AsyncStorage ডেটা এনক্রিপ্টেড নয়, তাই এটি শুধুমাত্র সাধারণ ডেটার জন্য ব্যবহার করা উচিত, যেমন ইউজারের সেটিংস বা ছোট আকারের কনফিগারেশন।

AsyncStorage এর মাধ্যমে ডেটা স্টোর এবং রিট্রিভ করা

প্রথমে আপনাকে AsyncStorage ইনস্টল এবং ইম্পোর্ট করতে হবে।

১. AsyncStorage ইনস্টল করা

React Native এর নতুন ভার্সনে AsyncStorage আলাদা প্যাকেজ হিসেবে উপলব্ধ। প্রথমে আপনাকে এটি ইন্সটল করতে হবে:

npm install @react-native-async-storage/async-storage

২. AsyncStorage ইম্পোর্ট করা

import AsyncStorage from '@react-native-async-storage/async-storage';

ডেটা স্টোর করার পদ্ধতি

AsyncStorage ব্যবহার করে আপনি সহজেই ডেটা স্টোর করতে পারেন। নিচে একটি সিম্পল উদাহরণ দেওয়া হল, যেখানে একটি স্ট্রিং ভ্যালু স্টোর করা হচ্ছে।

const storeData = async (value) => {
  try {
    await AsyncStorage.setItem('@storage_Key', value); // স্টোর করা
    console.log('Data stored successfully');
  } catch (e) {
    console.log('Failed to save data', e);
  }
};

এখানে, @storage_Key হল কীর নাম এবং value হল স্টোর করার ভ্যালু। আপনি যেকোনো স্ট্রিং বা সাধারণ ডেটা টাইপ স্টোর করতে পারবেন।


স্টোর করা ডেটা রিট্রিভ করার পদ্ধতি

স্টোর করা ডেটা রিট্রিভ (পুনরুদ্ধার) করার জন্য, আপনি AsyncStorage.getItem() ব্যবহার করবেন। নিচে একটি উদাহরণ দেওয়া হলো:

const getData = async () => {
  try {
    const value = await AsyncStorage.getItem('@storage_Key');
    if (value !== null) {
      // ডেটা পাওয়া গেছে
      console.log('Stored data:', value);
    } else {
      console.log('No data found');
    }
  } catch (e) {
    console.log('Failed to fetch data', e);
  }
};

এখানে, @storage_Key সেই কী যা আপনি পূর্বে setItem() দিয়ে স্টোর করেছিলেন, এবং value হল স্টোর করা ডেটা যা আপনি পুনরুদ্ধার করছেন।


ডেটা মুছে ফেলার পদ্ধতি

স্টোর করা ডেটা মুছে ফেলার জন্য AsyncStorage.removeItem() ব্যবহার করতে পারেন:

const removeData = async () => {
  try {
    await AsyncStorage.removeItem('@storage_Key');
    console.log('Data removed successfully');
  } catch (e) {
    console.log('Failed to remove data', e);
  }
};

সম্পূর্ণ উদাহরণ: AsyncStorage ব্যবহার করে ডেটা স্টোর, রিট্রিভ, এবং মুছে ফেলা

import React, { useState } from 'react';
import { View, Text, Button } from 'react-native';
import AsyncStorage from '@react-native-async-storage/async-storage';

const App = () => {
  const [data, setData] = useState('');

  // ডেটা স্টোর করা
  const storeData = async () => {
    try {
      await AsyncStorage.setItem('@storage_Key', 'Hello AsyncStorage');
      console.log('Data stored successfully');
    } catch (e) {
      console.log('Failed to save data', e);
    }
  };

  // ডেটা রিট্রিভ করা
  const getData = async () => {
    try {
      const value = await AsyncStorage.getItem('@storage_Key');
      if (value !== null) {
        setData(value); // UI তে দেখানোর জন্য
        console.log('Stored data:', value);
      } else {
        console.log('No data found');
      }
    } catch (e) {
      console.log('Failed to fetch data', e);
    }
  };

  // ডেটা মুছে ফেলা
  const removeData = async () => {
    try {
      await AsyncStorage.removeItem('@storage_Key');
      setData(''); // UI তে ডেটা মুছে ফেলা
      console.log('Data removed successfully');
    } catch (e) {
      console.log('Failed to remove data', e);
    }
  };

  return (
    <View>
      <Text>Stored Data: {data}</Text>
      <Button title="Store Data" onPress={storeData} />
      <Button title="Get Data" onPress={getData} />
      <Button title="Remove Data" onPress={removeData} />
    </View>
  );
};

export default App;

সারাংশ

  • AsyncStorage সহজে key-value pair ডেটা স্টোর করার জন্য ব্যবহৃত হয়।
  • এটি স্টোর করা ডেটা রিট্রিভ এবং মুছে ফেলার জন্য ব্যবহৃত হয়।
  • AsyncStorage একটি অসিনক্রোনাস API, তাই await এবং async ব্যবহার করতে হয়।
  • AsyncStorage সাধারণত ছোট ডেটা, যেমন ইউজার প্রেফারেন্স বা সেটিংস সংরক্ষণ করতে ব্যবহৃত হয়, তবে এটি সিকিউর ডেটা স্টোরেজ নয়, তাই সিকিউরিটি ফিচারসহ ডেটার জন্য অন্য স্টোরেজ ব্যবহার করা উচিত।
Content added By

SQLite এবং Realm দিয়ে Local Database ম্যানেজমেন্ট

220

React Native অ্যাপ্লিকেশনে Local Database ব্যবহারের মাধ্যমে আপনি অ্যাপের ডেটা অফলাইনে সংরক্ষণ করতে পারেন। দুটি জনপ্রিয় স্থানীয় ডাটাবেস সিস্টেম SQLite এবং Realm। এই দুটি ডাটাবেসের প্রতিটির নিজস্ব বৈশিষ্ট্য রয়েছে এবং এগুলি ব্যবহৃত হয় বিভিন্ন ধরনের অ্যাপ্লিকেশনের ডেটা সংরক্ষণ এবং ম্যানেজমেন্টের জন্য।

নিচে SQLite এবং Realm এর মাধ্যমে React Native অ্যাপের জন্য Local Database Management ব্যবস্থাপনা নিয়ে বিস্তারিত আলোচনা করা হয়েছে।


SQLite - Local Database Management

SQLite হল একটি ছোট এবং সিম্পল SQL ডেটাবেস ইঞ্জিন যা ডিভাইসে ইনস্টল করা হয় এবং অ্যাপ্লিকেশনগুলোতে ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। এটি একটি রিলেশনাল ডেটাবেস (RDBMS), যেখানে ডেটাকে টেবিলের মাধ্যমে সংরক্ষণ করা হয় এবং SQL কোয়েরি ব্যবহার করে তা পরিচালনা করা হয়।

SQLite ইনস্টলেশন

React Native অ্যাপ্লিকেশনে SQLite ব্যবহার করতে হলে আপনাকে প্রথমে react-native-sqlite-storage প্যাকেজটি ইনস্টল করতে হবে।

npm install react-native-sqlite-storage

React Native 0.60+ এর জন্য আপনাকে autolinking কাজ করবে। যদি আপনার React Native ভার্সন 0.59 বা তার কম হয়, তবে আপনাকে লিংক করতে হতে পারে।

SQLite ব্যবহার করে Local Database তৈরি

import SQLite from 'react-native-sqlite-storage';

// SQLite ডাটাবেস ওপেন করা
const db = SQLite.openDatabase(
  { name: 'user.db', location: 'default' },
  () => console.log('SQLite database opened'),
  (error) => console.log('Error opening database', error)
);

// টেবিল তৈরি করা
const createTable = () => {
  db.transaction((tx) => {
    tx.executeSql(
      'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)',
      [],
      () => console.log('Table created successfully'),
      (error) => console.log('Error creating table', error)
    );
  });
};

// ডেটা ইনসার্ট করা
const insertData = (name, age) => {
  db.transaction((tx) => {
    tx.executeSql(
      'INSERT INTO users (name, age) VALUES (?, ?)',
      [name, age],
      () => console.log('Data inserted successfully'),
      (error) => console.log('Error inserting data', error)
    );
  });
};

// ডেটা রিট্রিভ করা
const fetchData = () => {
  db.transaction((tx) => {
    tx.executeSql(
      'SELECT * FROM users',
      [],
      (tx, results) => {
        console.log('Rows:', results.rows);
      },
      (error) => console.log('Error fetching data', error)
    );
  });
};

// ডেটা আপডেট করা
const updateData = (id, name, age) => {
  db.transaction((tx) => {
    tx.executeSql(
      'UPDATE users SET name=?, age=? WHERE id=?',
      [name, age, id],
      () => console.log('Data updated successfully'),
      (error) => console.log('Error updating data', error)
    );
  });
};

// ডেটা ডিলিট করা
const deleteData = (id) => {
  db.transaction((tx) => {
    tx.executeSql(
      'DELETE FROM users WHERE id=?',
      [id],
      () => console.log('Data deleted successfully'),
      (error) => console.log('Error deleting data', error)
    );
  });
};

এখানে SQLite.openDatabase দিয়ে ডাটাবেস ওপেন করা হয়েছে এবং বিভিন্ন SQL কোয়েরি যেমন CREATE, INSERT, SELECT, UPDATE, এবং DELETE ব্যবহার করা হয়েছে।

SQLite এর সুবিধা

  • রিলেশনাল ডেটাবেস: টেবিল, কোয়েরি, জয়েন ইত্যাদি সুবিধা পাওয়া যায়।
  • কমপ্যাক্ট এবং ফাস্ট: SQLite খুবই লাইটওয়েট এবং দ্রুত কাজ করে।
  • অফলাইন সাপোর্ট: ডিভাইসে ডেটা সংরক্ষণ করে অফলাইনে অ্যাপ কাজ করতে পারে।
  • ইন-এপ্লিকেশন ডেটাবেস: কোনো সার্ভারের প্রয়োজন নেই।

Realm - Local Database Management

Realm একটি আধুনিক, দ্রুত এবং স্কেলেবল NoSQL ডেটাবেস, যা React Native অ্যাপ্লিকেশনের জন্য খুবই জনপ্রিয়। এটি ডেটাকে অবজেক্ট হিসেবে সংরক্ষণ করে, এবং সহজেই বড় ডেটা সেট ম্যানেজ করতে পারে।

Realm ইনস্টলেশন

React Native অ্যাপে Realm ব্যবহার করতে হলে আপনাকে realm প্যাকেজটি ইনস্টল করতে হবে:

npm install realm

React Native 0.60+ এ autolinking সমর্থিত, তবে পুরানো ভার্সনের জন্য আপনাকে লিংক করতে হতে পারে।

Realm ব্যবহার করে Local Database তৈরি

import Realm from 'realm';

// Realm Schema তৈরি করা
const UserSchema = {
  name: 'User',
  properties: {
    id: 'int',
    name: 'string',
    age: 'int',
  },
};

// ডাটাবেস ওপেন করা
const realm = await Realm.open({
  path: 'user.realm',
  schema: [UserSchema],
});

// ডেটা ইনসার্ট করা
realm.write(() => {
  realm.create('User', {
    id: 1,
    name: 'John Doe',
    age: 30,
  });
});

// ডেটা রিট্রিভ করা
const users = realm.objects('User');
console.log(users);

// ডেটা আপডেট করা
realm.write(() => {
  const user = realm.objects('User').filtered('id = 1')[0];
  user.age = 31;
});

// ডেটা ডিলিট করা
realm.write(() => {
  const user = realm.objects('User').filtered('id = 1')[0];
  realm.delete(user);
});

এখানে Realm.open দিয়ে ডাটাবেস ওপেন করা হয়েছে এবং বিভিন্ন অবজেক্ট অপারেশন যেমন create, read, update, এবং delete করা হয়েছে।

Realm এর সুবিধা

  • NoSQL ডেটাবেস: Realm ডেটাকে অবজেক্ট হিসেবে সংরক্ষণ করে, যা রিলেশনাল ডেটাবেসের তুলনায় আরও ফ্লেক্সিবল।
  • বৃহত ডেটা ম্যানেজমেন্ট: বৃহত্তর ডেটা সেটের জন্য এটি অত্যন্ত কার্যকরী এবং দ্রুত।
  • অফলাইন সাপোর্ট: Realm ডেটা লোকালি সংরক্ষণ করে এবং অফলাইনে অ্যাপ চলতে সাহায্য করে।
  • এবসট্রাকশন: Realm ডেটাবেস ব্যবস্থাপনা সহজ করে তোলে, কারণ এটি ডেটাবেস অপারেশন সরাসরি JavaScript অবজেক্টের মাধ্যমে পরিচালনা করতে দেয়।
  • ক্রস-প্ল্যাটফর্ম সাপোর্ট: Realm Android, iOS এবং React Native প্ল্যাটফর্মে কাজ করে।

সারাংশ

  • SQLite একটি রিলেশনাল ডেটাবেস যা SQL কোয়েরি ব্যবহার করে ডেটা সংরক্ষণ করে, এটি অফলাইন অ্যাপ্লিকেশনের জন্য উপযুক্ত।
  • Realm একটি NoSQL ডেটাবেস যা অবজেক্ট ভিত্তিক ডেটা ম্যানেজমেন্ট সরবরাহ করে, এটি বড় ডেটাসেট এবং দ্রুত পারফরম্যান্সের জন্য উপযুক্ত।

আপনার অ্যাপ্লিকেশনের প্রয়োজন অনুসারে আপনি SQLite বা Realm এর মধ্যে যে কোন একটি ব্যবহার করতে পারেন। SQLite যখন রিলেশনাল ডেটাবেস প্রয়োজন এবং SQL ব্যবহারের সুবিধা পছন্দ করেন, তখন এটি উপযুক্ত; তবে Realm অবজেক্ট-ভিত্তিক ডেটা সংরক্ষণ এবং ম্যানেজমেন্টে সহজ এবং দ্রুত কাজ করে।

Content added By

Secure Storage এবং Data Encryption Techniques

254

React Native অ্যাপ্লিকেশনে Secure Storage এবং Data Encryption হল নিরাপত্তা নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ বিষয়। এই দুটি প্রক্রিয়া অ্যাপের মধ্যে সংরক্ষিত ডেটা এবং তথ্যকে নিরাপদ রাখে, যাতে অবাঞ্ছিত অ্যাক্সেস থেকে সেগুলি সুরক্ষিত থাকে। এখানে আমরা Secure Storage এবং Data Encryption Techniques এর ওপর বিস্তারিত আলোচনা করব।


Secure Storage in React Native

Secure Storage অ্যাপ্লিকেশন ডেটা সুরক্ষিতভাবে সংরক্ষণ করার জন্য ব্যবহৃত হয়, বিশেষ করে যখন ব্যবহারকারীর পাসওয়ার্ড বা অন্যান্য সংবেদনশীল তথ্য সংরক্ষণ করতে হয়। React Native-এ Secure Storage এর জন্য বিভিন্ন লাইব্রেরি রয়েছে, যার মধ্যে react-native-keychain, react-native-secure-storage এবং react-native-sensitive-info অন্যতম।

১. react-native-keychain ব্যবহার

react-native-keychain একটি জনপ্রিয় লাইব্রেরি যা নিরাপদভাবে পাসওয়ার্ড এবং অন্যান্য সুরক্ষিত তথ্য সংরক্ষণ করার জন্য ব্যবহৃত হয়। এটি iOS এবং Android-এর জন্য Keychain এবং Keystore ব্যবহার করে নিরাপত্তা প্রদান করে।

ইনস্টলেশন:

npm install react-native-keychain

ব্যবহার:

import * as Keychain from 'react-native-keychain';

// Securely store a password
const storePassword = async () => {
  await Keychain.setGenericPassword('user', 'password123');
};

// Retrieve stored password
const getPassword = async () => {
  const credentials = await Keychain.getGenericPassword();
  if (credentials) {
    console.log('Credentials successfully loaded', credentials);
  } else {
    console.log('No credentials stored');
  }
};

// Delete stored credentials
const deletePassword = async () => {
  await Keychain.resetGenericPassword();
};

এখানে, আমরা setGenericPassword, getGenericPassword, এবং resetGenericPassword ফাংশন ব্যবহার করেছি পাসওয়ার্ড নিরাপদে সংরক্ষণ, পুনরুদ্ধার এবং মুছে ফেলার জন্য।

২. react-native-secure-storage ব্যবহার

react-native-secure-storage একটি আরও বিকল্প লাইব্রেরি যা ডেটা নিরাপদভাবে সংরক্ষণ করতে ব্যবহৃত হয়। এটি ডেটা অ্যাপ্লিকেশনের iOS Keychain এবং Android Keystore সিস্টেমে সংরক্ষণ করে।

ইনস্টলেশন:

npm install react-native-secure-storage

ব্যবহার:

import SecureStorage from 'react-native-secure-storage';

// Store data securely
const storeSecureData = async () => {
  await SecureStorage.setItem('user_token', 'abcdefg12345');
};

// Retrieve data
const getSecureData = async () => {
  const userToken = await SecureStorage.getItem('user_token');
  console.log('Stored Token:', userToken);
};

// Delete data
const deleteSecureData = async () => {
  await SecureStorage.removeItem('user_token');
};

এখানে, আমরা setItem, getItem, এবং removeItem ফাংশন ব্যবহার করে নিরাপদভাবে ডেটা সংরক্ষণ, পুনরুদ্ধার এবং মুছেছি।


Data Encryption Techniques in React Native

Data Encryption হল একটি প্রক্রিয়া যার মাধ্যমে ডেটা কে এমনভাবে এনক্রিপ্ট করা হয় যাতে এটি শুধুমাত্র অনুমোদিত ব্যবহারকারী বা অ্যাপ্লিকেশন দ্বারা পড়া সম্ভব হয়। React Native-এ ডেটা এনক্রিপশনের জন্য বিভিন্ন টুলস এবং লাইব্রেরি ব্যবহৃত হতে পারে, যার মধ্যে react-native-encrypted-storage, crypto-js ইত্যাদি অন্তর্ভুক্ত।

১. react-native-encrypted-storage

react-native-encrypted-storage একটি সিম্পল লাইব্রেরি যা AES-256 encryption ব্যবহার করে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করে, এবং এটি iOS Keychain এবং Android Keystore ব্যবহার করে সুরক্ষিতভাবে ডেটা সংরক্ষণ করে।

ইনস্টলেশন:

npm install react-native-encrypted-storage

ব্যবহার:

import EncryptedStorage from 'react-native-encrypted-storage';

// Encrypt and store data
const storeEncryptedData = async () => {
  await EncryptedStorage.setItem(
    'user_token',
    JSON.stringify({ token: 'abcdefg12345' })
  );
};

// Retrieve and decrypt data
const getEncryptedData = async () => {
  const userToken = await EncryptedStorage.getItem('user_token');
  if (userToken) {
    console.log('Decrypted Data:', JSON.parse(userToken));
  }
};

// Remove encrypted data
const removeEncryptedData = async () => {
  await EncryptedStorage.removeItem('user_token');
};

এখানে, setItem, getItem, এবং removeItem ফাংশন ব্যবহার করে ডেটা এনক্রিপ্ট করে সংরক্ষণ, পুনরুদ্ধার এবং মুছে ফেলা হয়েছে।

২. crypto-js ব্যবহার

crypto-js একটি সাধারণ লাইব্রেরি যা JavaScript অ্যাপ্লিকেশনে symmetric encryption এবং hashing সমর্থন করে। এটি React Native অ্যাপ্লিকেশনে সুরক্ষিত ডেটা এনক্রিপশন এবং ডিক্রিপশন করার জন্য ব্যবহার করা যেতে পারে।

ইনস্টলেশন:

npm install crypto-js

ব্যবহার:

import CryptoJS from 'crypto-js';

// Encrypt data
const encryptData = (data) => {
  const encryptedData = CryptoJS.AES.encrypt(data, 'secret-key').toString();
  return encryptedData;
};

// Decrypt data
const decryptData = (encryptedData) => {
  const bytes = CryptoJS.AES.decrypt(encryptedData, 'secret-key');
  const decryptedData = bytes.toString(CryptoJS.enc.Utf8);
  return decryptedData;
};

// Example usage
const encrypted = encryptData('Sensitive Data');
console.log('Encrypted:', encrypted);

const decrypted = decryptData(encrypted);
console.log('Decrypted:', decrypted);

এখানে, AES encryption এবং secret-key ব্যবহার করে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করা হয়েছে।


সারাংশ

  • Secure Storage: React Native অ্যাপ্লিকেশনগুলিতে ডেটা সুরক্ষিতভাবে সংরক্ষণ করার জন্য বিভিন্ন লাইব্রেরি ব্যবহার করা হয় যেমন react-native-keychain, react-native-secure-storage, এবং react-native-sensitive-info। এই লাইব্রেরিগুলি ডেটা Keystore বা Keychain ব্যবহার করে সংরক্ষণ করে।
  • Data Encryption: ডেটা এনক্রিপশন নিশ্চিত করে যে সংবেদনশীল তথ্য নিরাপদ থাকে এবং শুধুমাত্র অনুমোদিত ব্যবহারকারী তা অ্যাক্সেস করতে পারে। React Native-এ ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করতে react-native-encrypted-storage, crypto-js ইত্যাদি লাইব্রেরি ব্যবহার করা হয়।

এই প্রযুক্তি এবং লাইব্রেরিগুলি ব্যবহার করে, আপনি আপনার অ্যাপ্লিকেশনের মধ্যে সংবেদনশীল তথ্য যেমন পাসওয়ার্ড, টোকেন ইত্যাদি সুরক্ষিতভাবে সংরক্ষণ এবং এনক্রিপ্ট করতে পারবেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...